package com.yf.custom.pay;

import java.math.BigDecimal;

/**
 * @ClassName PayChannelContext        支付上下文
 * @Description TODO
 * @Author yf
 * @Date 2018/10/15 11:21
 * @Version 1.0
 */
public class PayChannelContext {
    /**
     * 支付渠道上下文：策略模式，根据channelId动态获取对应实现类并执行
     * @param channelId
     * @param goodsId
     * @return
     * @throws Exception
     */
    BigDecimal calRecharge(Integer channelId, Integer goodsId) throws Exception {
        //1.获取工厂
        PayStrategyFactory payStrategyFactory=PayStrategyFactory.getInstance();
        //2.调用具体实现
        PayStrategy payStrategy=payStrategyFactory.create(channelId);
        //3.执行并返回结果
        return payStrategy.calRecharge(channelId,goodsId);
    }
}
